// utils/http.js
import { $http } from '@escook/request-miniprogram'
import { getBaseUrl } from './config'

// 配置请求根路径（支持环境切换与自定义）
$http.baseUrl = getBaseUrl()
// 请求开始之前做一些事情
$http.beforeRequest = function(options) { 
	uni.showLoading({
		title: '数据加载中...',
	});
	// 这里可以统一添加 token 到请求头
	const token = uni.getStorageSync('token');
	if (token) {
		options.header = options.header || {};
		options.header.Authorization = token;
	}
	return options
}
// 请求完成之后做一些事情
$http.afterRequest = function(response) {
	uni.hideLoading();
	const { statusCode, data } = response;

	if (statusCode === 401) {
		uni.showToast({
			title:"请先登录",
			icon:"none",
			duration: 2000
		})
		
		setTimeout(()=>{
			uni.switchTab({
				url:"/pages/my/my"
			})
		}, 500)
		throw {
			statusCode,
			data,
			message: '请先登录'
		};
	}

	if (statusCode === 200 && data && typeof data === 'object' && 'code' in data && data.code !== 1) {
		const message = data.msg || '请求失败，请稍后重试';
		if (data.code === 401) {
			uni.showToast({
				title: message,
				icon: "none",
				duration: 2000
			})
			setTimeout(()=>{
				uni.switchTab({
					url:"/pages/my/my"
				})
			}, 500)
		} else {
			uni.showToast({
				title: message,
				icon: "none",
				duration: 2000
			})
		}
		throw {
			statusCode,
			data,
			message
		};
	}

	if (statusCode >= 400) {
		const message = (data && (data.msg || data.message)) || '请求失败，请稍后重试';
		uni.showToast({
			title: message,
			icon: "none",
			duration: 2000
		})
		throw {
			statusCode,
			data,
			message
		};
	}

	return response;
}

export default $http;